#pragma once

#include <yaml-cpp/yaml.h>

/**
 * @brief 检查节点是否存在
 *
 * @param node 节点
 * @param key 键
 */
void checkNodeExists(const YAML::Node &node, const std::string &key);

/**
 * @brief 获取节点值
 *
 * @param node 节点
 * @param key 键
 * @param defaultValue 默认值
 * @return T 值
 */
template <typename T>
T getRequireValue(const YAML::Node &node, const std::string &key, T defaultValue)
{
    if (node[key].IsDefined()) {
        return node[key].as<T>();
    }
    return defaultValue;
}
